--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LXST/Primitives/Telephony.py c74d2dd5cbffdff82fdb707ef50ce04937c9689f (c74d2dd5) Text, 37.02 KB
Tff7b72import T7ee787os
Tff7b72import T7ee787RNS
Tff7b72import T7ee787LXST
Tff7b72import T7ee787time
Tff7b72import T7ee787threading
Tff7b72from T7ee787LXST Tff7b72import Te6edf3APP_NAME
Tff7b72from T7ee787LXST Tff7b72import Te6edf3MixerTb4b4b4, Te6edf3Pipeline
Tff7b72from T7ee787LXSTT7ee787.T7ee787Codecs Tff7b72import Te6edf3RawTb4b4b4, Te6edf3OpusTb4b4b4, Te6edf3Codec2Tb4b4b4, Te6edf3Null
Tff7b72from T7ee787LXSTT7ee787.T7ee787Sinks Tff7b72import Te6edf3LineSink
Tff7b72from T7ee787LXSTT7ee787.T7ee787Sources Tff7b72import Te6edf3LineSourceTb4b4b4, Te6edf3OpusFileSource
Tff7b72from T7ee787LXSTT7ee787.T7ee787Generators Tff7b72import Te6edf3ToneSource
Tff7b72from T7ee787LXSTT7ee787.T7ee787Network Tff7b72import Te6edf3SignallingReceiverTb4b4b4, Te6edf3PacketizerTb4b4b4, Te6edf3LinkSource
Tff7b72from T7ee787LXSTT7ee787.T7ee787Filters Tff7b72import Te6edf3BandPassTb4b4b4, Te6edf3AGC
Te6edf3PRIMITIVE_NAME Tff7b72= Ta5d6ff"Ta5d6fftelephonyTa5d6ff"
Tff7b72class T56d364ProfilesTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3BANDWIDTH_ULTRA_LOW Tff7b72= T79c0ff0x10
Te6edf3BANDWIDTH_VERY_LOW Tff7b72= T79c0ff0x20
Te6edf3BANDWIDTH_LOW Tff7b72= T79c0ff0x30
Te6edf3QUALITY_MEDIUM Tff7b72= T79c0ff0x40
Te6edf3QUALITY_HIGH Tff7b72= T79c0ff0x50
Te6edf3QUALITY_MAX Tff7b72= T79c0ff0x60
Te6edf3LATENCY_ULTRA_LOW Tff7b72= T79c0ff0x70
Te6edf3LATENCY_LOW Tff7b72= T79c0ff0x80
Te6edf3DEFAULT_PROFILE Tff7b72= Te6edf3QUALITY_MEDIUM
Tf0883e@staticmethod
Tff7b72def Td2a8ffavailable_profilesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_ULTRA_LOWTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_VERY_LOWTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_LOWTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MEDIUMTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_HIGHTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MAXTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_LOWTb4b4b4,
Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_ULTRA_LOWTb4b4b4]
Tf0883e@staticmethod
Tff7b72def Td2a8ffprofile_indexTb4b4b4(Te6edf3profileTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3profile Tff7b72in Te6edf3ProfilesTff7b72.Td2a8ffavailable_profilesTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3ProfilesTff7b72.Td2a8ffavailable_profilesTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffindexTb4b4b4(Te6edf3profileTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72None
Tf0883e@staticmethod
Tff7b72def Td2a8ffprofile_nameTb4b4b4(Te6edf3profileTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_ULTRA_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffUltra Low BandwidthTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_VERY_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffVery Low BandwidthTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffLow BandwidthTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MEDIUMTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffMedium QualityTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_HIGHTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffHigh QualityTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MAXTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffSuper High QualityTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffLow LatencyTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_ULTRA_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffUltra Low LatencyTa5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffDefaultTa5d6ff"
Tf0883e@staticmethod
Tff7b72def Td2a8ffprofile_abbrevationTb4b4b4(Te6edf3profileTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_ULTRA_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffULBWTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_VERY_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffVLBWTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffLBWTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MEDIUMTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffMQTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_HIGHTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffHQTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MAXTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffSHQTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffLLTa5d6ff"
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_ULTRA_LOWTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffULLTa5d6ff"
Tff7b72elseTb4b4b4: Tff7b72return Ta5d6ff"Ta5d6ffDFLTTa5d6ff"
Tf0883e@staticmethod
Tff7b72def Td2a8ffget_codecTb4b4b4(Te6edf3profileTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_ULTRA_LOWTb4b4b4: Tff7b72return Te6edf3Codec2Tb4b4b4(Te6edf3modeTff7b72=Te6edf3Codec2Tff7b72.Td2a8ffCODEC2_700CTb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_VERY_LOWTb4b4b4: Tff7b72return Te6edf3Codec2Tb4b4b4(Te6edf3modeTff7b72=Te6edf3Codec2Tff7b72.Td2a8ffCODEC2_1600Tb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_LOWTb4b4b4: Tff7b72return Te6edf3Codec2Tb4b4b4(Te6edf3modeTff7b72=Te6edf3Codec2Tff7b72.Td2a8ffCODEC2_3200Tb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MEDIUMTb4b4b4: Tff7b72return Te6edf3OpusTb4b4b4(Te6edf3profileTff7b72=Te6edf3OpusTff7b72.Td2a8ffPROFILE_VOICE_MEDIUMTb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_HIGHTb4b4b4: Tff7b72return Te6edf3OpusTb4b4b4(Te6edf3profileTff7b72=Te6edf3OpusTff7b72.Td2a8ffPROFILE_VOICE_HIGHTb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MAXTb4b4b4: Tff7b72return Te6edf3OpusTb4b4b4(Te6edf3profileTff7b72=Te6edf3OpusTff7b72.Td2a8ffPROFILE_VOICE_MAXTb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_LOWTb4b4b4: Tff7b72return Te6edf3OpusTb4b4b4(Te6edf3profileTff7b72=Te6edf3OpusTff7b72.Td2a8ffPROFILE_VOICE_MEDIUMTb4b4b4)
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_ULTRA_LOWTb4b4b4: Tff7b72return Te6edf3OpusTb4b4b4(Te6edf3profileTff7b72=Te6edf3OpusTff7b72.Td2a8ffPROFILE_VOICE_MEDIUMTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Te6edf3OpusTb4b4b4(Te6edf3profileTff7b72=Te6edf3OpusTff7b72.Td2a8ffPROFILE_VOICE_MEDIUMTb4b4b4)
Tf0883e@staticmethod
Tff7b72def Td2a8ffget_frame_timeTb4b4b4(Te6edf3profileTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_ULTRA_LOWTb4b4b4: Tff7b72return T79c0ff400
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_VERY_LOWTb4b4b4: Tff7b72return T79c0ff320
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffBANDWIDTH_LOWTb4b4b4: Tff7b72return T79c0ff200
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MEDIUMTb4b4b4: Tff7b72return T79c0ff60
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_HIGHTb4b4b4: Tff7b72return T79c0ff60
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffQUALITY_MAXTb4b4b4: Tff7b72return T79c0ff60
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_LOWTb4b4b4: Tff7b72return T79c0ff20
Tff7b72elif Te6edf3profile Tff7b72== Te6edf3ProfilesTff7b72.Td2a8ffLATENCY_ULTRA_LOWTb4b4b4: Tff7b72return T79c0ff10
Tff7b72elseTb4b4b4: Tff7b72return T79c0ff60
Tf0883e@staticmethod
Tff7b72def Td2a8ffnext_profileTb4b4b4(Te6edf3profileTb4b4b4)Tb4b4b4:
Te6edf3profile_list Tff7b72= Te6edf3ProfilesTff7b72.Td2a8ffavailable_profilesTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3profile Tff7b72in Te6edf3profile_listTb4b4b4:
Tff7b72return Te6edf3profile_listTb4b4b4[Tb4b4b4(Te6edf3ProfilesTff7b72.Td2a8ffprofile_indexTb4b4b4(Te6edf3profileTb4b4b4)Tff7b72+T79c0ff1Tb4b4b4)Tff7b72%Tffa657lenTb4b4b4(Te6edf3profile_listTb4b4b4)Tb4b4b4]
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72None
Tff7b72class T56d364SignallingTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3STATUS_BUSY Tff7b72= T79c0ff0x00
Te6edf3STATUS_REJECTED Tff7b72= T79c0ff0x01
Te6edf3STATUS_CALLING Tff7b72= T79c0ff0x02
Te6edf3STATUS_AVAILABLE Tff7b72= T79c0ff0x03
Te6edf3STATUS_RINGING Tff7b72= T79c0ff0x04
Te6edf3STATUS_CONNECTING Tff7b72= T79c0ff0x05
Te6edf3STATUS_ESTABLISHED Tff7b72= T79c0ff0x06
Te6edf3PREFERRED_PROFILE Tff7b72= T79c0ff0xFF
Te6edf3AUTO_STATUS_CODES Tff7b72= Tb4b4b4[Te6edf3STATUS_CALLINGTb4b4b4, Te6edf3STATUS_AVAILABLETb4b4b4, Te6edf3STATUS_RINGINGTb4b4b4,
Te6edf3STATUS_CONNECTINGTb4b4b4, Te6edf3STATUS_ESTABLISHEDTb4b4b4]
Tff7b72class T56d364TelephoneTb4b4b4(Te6edf3SignallingReceiverTb4b4b4)Tb4b4b4:
Te6edf3RING_TIME Tff7b72= T79c0ff60
Te6edf3WAIT_TIME Tff7b72= T79c0ff70
Te6edf3CONNECT_TIME Tff7b72= T79c0ff5
Te6edf3DIAL_TONE_FREQUENCY Tff7b72= T79c0ff382
Te6edf3DIAL_TONE_EASE_MS Tff7b72= T79c0ff3.14159
Te6edf3JOB_INTERVAL Tff7b72= T79c0ff5
Te6edf3ANNOUNCE_INTERVAL_MIN Tff7b72= T79c0ff60Tff7b72*T79c0ff5
Te6edf3ANNOUNCE_INTERVAL Tff7b72= T79c0ff60Tff7b72*T79c0ff60Tff7b72*T79c0ff3
Te6edf3ALLOW_ALL Tff7b72= T79c0ff0xFF
Te6edf3ALLOW_NONE Tff7b72= T79c0ff0xFE
Tf0883e@staticmethod
Tff7b72def Td2a8ffavailable_outputsTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3LXSTTff7b72.Td2a8ffSinksTff7b72.Td2a8ffBackendTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffall_speakersTb4b4b4(Tb4b4b4)
Tf0883e@staticmethod
Tff7b72def Td2a8ffavailable_inputsTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3LXSTTff7b72.Td2a8ffSourcesTff7b72.Td2a8ffBackendTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffall_microphonesTb4b4b4(Tb4b4b4)
Tf0883e@staticmethod
Tff7b72def Td2a8ffdefault_outputTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3LXSTTff7b72.Td2a8ffSinksTff7b72.Td2a8ffBackendTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffdefault_speakerTb4b4b4(Tb4b4b4)
Tf0883e@staticmethod
Tff7b72def Td2a8ffdefault_inputTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3LXSTTff7b72.Td2a8ffSourcesTff7b72.Td2a8ffBackendTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3identityTb4b4b4, Te6edf3ring_timeTff7b72=Te6edf3RING_TIMETb4b4b4, Te6edf3wait_timeTff7b72=Te6edf3WAIT_TIMETb4b4b4, Te6edf3auto_answerTff7b72=Tff7b72NoneTb4b4b4, Te6edf3allowedTff7b72=Te6edf3ALLOW_ALLTb4b4b4, Te6edf3receive_gainTff7b72=T79c0ff0.0Tb4b4b4, Te6edf3transmit_gainTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffidentity Tff7b72= Te6edf3identity
Tff7b72selfTff7b72.Td2a8ffdestination Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTb4b4b4(Tff7b72selfTff7b72.Td2a8ffidentityTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffINTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffSINGLETb4b4b4, Te6edf3APP_NAMETb4b4b4, Te6edf3PRIMITIVE_NAMETb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffset_proof_strategyTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffPROVE_NONETb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffset_link_established_callbackTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__incoming_link_establishedTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffallowed Tff7b72= Te6edf3allowed
Tff7b72selfTff7b72.Td2a8ffblocked Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fflast_announce Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffcall_handler_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffpipeline_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcaller_pipeline_open_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffestablishment_timeout Tff7b72= Tff7b72selfTff7b72.Td2a8ffCONNECT_TIME
Tff7b72selfTff7b72.Td2a8fflinks Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72selfTff7b72.Td2a8ffring_time Tff7b72= Te6edf3ring_time
Tff7b72selfTff7b72.Td2a8ffwait_time Tff7b72= Te6edf3wait_time
Tff7b72selfTff7b72.Td2a8ffauto_answer Tff7b72= Te6edf3auto_answer
Tff7b72selfTff7b72.Td2a8ffreceive_gain Tff7b72= Te6edf3receive_gain
Tff7b72selfTff7b72.Td2a8fftransmit_gain Tff7b72= Te6edf3transmit_gain
Tff7b72selfTff7b72.Td2a8ffuse_agc Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3SignallingTff7b72.Td2a8ffSTATUS_AVAILABLE
Tff7b72selfTff7b72.Td2a8ff_external_busy Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ff__ringing_callback Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff__established_callback Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff__ended_callback Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff__busy_callback Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff__rejected_callback Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftarget_frame_time_ms Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffaudio_output Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffaudio_input Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffdial_tone_frequency Tff7b72= Tff7b72selfTff7b72.Td2a8ffDIAL_TONE_FREQUENCY
Tff7b72selfTff7b72.Td2a8ffdial_tone_ease_ms Tff7b72= Tff7b72selfTff7b72.Td2a8ffDIAL_TONE_EASE_MS
Tff7b72selfTff7b72.Td2a8ffbusy_tone_seconds Tff7b72= T79c0ff4.25
Tff7b72selfTff7b72.Td2a8fftransmit_codec Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffreceive_codec Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffreceive_mixer Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftransmit_mixer Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffreceive_pipeline Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftransmit_pipeline Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff__receive_muted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ff__transmit_muted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffringer_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffringer_output Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffringer_pipeline Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffringtone_path Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffspeaker_device Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffmicrophone_device Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffringer_device Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fflow_latency_output Tff7b72= Tff7b72False
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Tff7b72selfTff7b72.Td2a8ff__jobsTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff listening on Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ffteardownTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffderegister_destinationTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdestinationTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdestination Tff7b72= Tff7b72None
Tff7b72def Td2a8ffannounceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3attached_interfaceTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdestinationTff7b72.Td2a8ffannounceTb4b4b4(Te6edf3attached_interfaceTff7b72=Te6edf3attached_interfaceTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflast_announce Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffset_allowedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3allowedTb4b4b4)Tb4b4b4:
Te6edf3valid_allowed Tff7b72= Tb4b4b4[Tff7b72selfTff7b72.Td2a8ffALLOW_ALLTb4b4b4, Tff7b72selfTff7b72.Td2a8ffALLOW_NONETb4b4b4]
Tff7b72if Tffa657callableTb4b4b4(Te6edf3allowedTb4b4b4) Tff7b72or Tffa657typeTb4b4b4(Te6edf3allowedTb4b4b4) Tff7b72== Tffa657list Tff7b72or Te6edf3allowed Tff7b72in Te6edf3valid_allowedTb4b4b4: Tff7b72selfTff7b72.Td2a8ffallowed Tff7b72= Te6edf3allowed
Tff7b72elseTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid type for allowed callers: Tffd700{Tffa657typeTb4b4b4(Te6edf3allowedTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffset_blockedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3blockedTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657typeTb4b4b4(Te6edf3blockedTb4b4b4) Tff7b72== Tffa657list Tff7b72or Te6edf3blocked Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffblocked Tff7b72= Te6edf3blocked
Tff7b72elseTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid type for blocked callers: Tffd700{Tffa657typeTb4b4b4(Te6edf3blockedTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffset_connect_timeoutTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3timeoutTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffestablishment_timeout Tff7b72= Te6edf3timeout
Tff7b72def Td2a8ffset_announce_intervalTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3announce_intervalTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657typeTb4b4b4(Te6edf3announce_intervalTb4b4b4) Tff7b72== Tffa657intTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid type for announce interval: Tffd700{Te6edf3announce_intervalTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3announce_interval Tff7b72< Tff7b72selfTff7b72.Td2a8ffANNOUNCE_INTERVAL_MINTb4b4b4: Te6edf3announce_interval Tff7b72= Tff7b72selfTff7b72.Td2a8ffANNOUNCE_INTERVAL_MIN
Tff7b72selfTff7b72.Td2a8ffannounce_interval Tff7b72= Te6edf3announce_interval
Tff7b72def Td2a8ffset_ringing_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callbackTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657callableTb4b4b4(Te6edf3callbackTb4b4b4)Tb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid callback, Tffd700{Te6edf3callbackTffd700}Ta5d6ff is not callableTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__ringing_callback Tff7b72= Te6edf3callback
Tff7b72def Td2a8ffset_established_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callbackTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657callableTb4b4b4(Te6edf3callbackTb4b4b4)Tb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid callback, Tffd700{Te6edf3callbackTffd700}Ta5d6ff is not callableTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__established_callback Tff7b72= Te6edf3callback
Tff7b72def Td2a8ffset_ended_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callbackTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657callableTb4b4b4(Te6edf3callbackTb4b4b4)Tb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid callback, Tffd700{Te6edf3callbackTffd700}Ta5d6ff is not callableTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__ended_callback Tff7b72= Te6edf3callback
Tff7b72def Td2a8ffset_busy_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callbackTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657callableTb4b4b4(Te6edf3callbackTb4b4b4)Tb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid callback, Tffd700{Te6edf3callbackTffd700}Ta5d6ff is not callableTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__busy_callback Tff7b72= Te6edf3callback
Tff7b72def Td2a8ffset_rejected_callbackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callbackTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657callableTb4b4b4(Te6edf3callbackTb4b4b4)Tb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid callback, Tffd700{Te6edf3callbackTffd700}Ta5d6ff is not callableTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__rejected_callback Tff7b72= Te6edf3callback
Tff7b72def Td2a8ffset_speakerTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deviceTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffspeaker_device Tff7b72= Te6edf3device
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff speaker device set to Tffd700{Te6edf3deviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ffset_microphoneTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deviceTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmicrophone_device Tff7b72= Te6edf3device
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff microphone device set to Tffd700{Te6edf3deviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ffset_ringerTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deviceTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffringer_device Tff7b72= Te6edf3device
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff ringer device set to Tffd700{Te6edf3deviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ffset_ringtoneTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3ringtone_pathTb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffringtone_path Tff7b72= Te6edf3ringtone_path
Tff7b72selfTff7b72.Td2a8ffringtone_gain Tff7b72= Te6edf3gain
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff ringtone set to Tffd700{Tff7b72selfTff7b72.Td2a8ffringtone_pathTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ffset_busy_tone_timeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3secondsTff7b72=T79c0ff4.25Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffbusy_tone_seconds Tff7b72= Te6edf3seconds
Tff7b72def Td2a8ffenable_agcTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3enableTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3enable Tff7b72== Tff7b72TrueTb4b4b4: Tff7b72selfTff7b72.Td2a8ffuse_agc Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffuse_agc Tff7b72= Tff7b72False
Tff7b72def Td2a8ffdisable_agcTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3disableTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3disable Tff7b72== Tff7b72TrueTb4b4b4: Tff7b72selfTff7b72.Td2a8ffuse_agc Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffuse_agc Tff7b72= Tff7b72True
Tff7b72def Td2a8ffset_low_latency_outputTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3enabledTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3enabledTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflow_latency_output Tff7b72= Tff7b72True
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff low-latency output enabledTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fflow_latency_output Tff7b72= Tff7b72False
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff low-latency output disabledTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ff__jobsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72while Tff7b72selfTff7b72.Td2a8ffdestination Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffJOB_INTERVALTb4b4b4)
Tff7b72if Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72> Tff7b72selfTff7b72.Td2a8fflast_announceTff7b72+Tff7b72selfTff7b72.Td2a8ffANNOUNCE_INTERVALTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdestination Tff7b72!= Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffannounceTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__is_allowedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3remote_identityTb4b4b4)Tb4b4b4:
Te6edf3identity_hash Tff7b72= Te6edf3remote_identityTff7b72.Td2a8ffhash
Tff7b72if Tffa657typeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffblockedTb4b4b4) Tff7b72== Tffa657list Tff7b72and Te6edf3identity_hash Tff7b72in Tff7b72selfTff7b72.Td2a8ffblockedTb4b4b4: Tff7b72return Tff7b72False
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffallowed Tff7b72== Tff7b72selfTff7b72.Td2a8ffALLOW_ALLTb4b4b4: Tff7b72return Tff7b72True
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffallowed Tff7b72== Tff7b72selfTff7b72.Td2a8ffALLOW_NONETb4b4b4: Tff7b72return Tff7b72False
Tff7b72elif Tffa657typeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffallowedTb4b4b4) Tff7b72== Tffa657listTb4b4b4: Tff7b72return Te6edf3identity_hash Tff7b72in Tff7b72selfTff7b72.Td2a8ffallowed
Tff7b72elif Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ffallowedTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffallowedTb4b4b4(Te6edf3identity_hashTb4b4b4)
Tff7b72def Td2a8ff__timeout_incoming_call_atTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callTb4b4b4, Te6edf3timeoutTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72<Te6edf3timeout Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72== Te6edf3callTb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72== Te6edf3call Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72< Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffRing timeout on call from Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff, hanging upTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffring_timeout Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__timeout_outgoing_call_atTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callTb4b4b4, Te6edf3timeoutTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72<Te6edf3timeout Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72== Te6edf3callTb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72== Te6edf3call Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72< Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffTimeout on outgoing call to Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff, hanging upTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__timeout_outgoing_establishment_atTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3callTb4b4b4, Te6edf3timeoutTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72<Te6edf3timeout Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72== Te6edf3callTb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72== Te6edf3call Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72< Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffTimeout on outgoing connection establishment to Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff, hanging upTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__incoming_link_establishedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linkTb4b4b4)Tb4b4b4:
Te6edf3linkTff7b72.Td2a8ffis_incoming Tff7b72= Tff7b72True
Te6edf3linkTff7b72.Td2a8ffis_outgoing Tff7b72= Tff7b72False
Te6edf3linkTff7b72.Td2a8ffring_timeout Tff7b72= Tff7b72False
Te6edf3linkTff7b72.Td2a8ffanswered Tff7b72= Tff7b72False
Te6edf3linkTff7b72.Td2a8ffis_terminating Tff7b72= Tff7b72False
Te6edf3linkTff7b72.Td2a8ffprofile Tff7b72= Tff7b72None
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcall_handler_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72or Tff7b72selfTff7b72.Td2a8ffbusyTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffIncoming call, but line is already active, signalling busyTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_BUSYTb4b4b4, Te6edf3linkTb4b4b4)
Te6edf3linkTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3linkTff7b72.Td2a8ffset_remote_identified_callbackTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__caller_identifiedTb4b4b4)
Te6edf3linkTff7b72.Td2a8ffset_link_closed_callbackTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__link_closedTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflinksTb4b4b4[Te6edf3linkTff7b72.Td2a8fflink_idTb4b4b4] Tff7b72= Te6edf3link
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_AVAILABLETb4b4b4, Te6edf3linkTb4b4b4)
Tff7b72def Td2a8ff__caller_identifiedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linkTb4b4b4, Te6edf3identityTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcall_handler_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72or Tff7b72selfTff7b72.Td2a8ffbusyTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCaller identified as Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff, but line is already active, signalling busyTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_BUSYTb4b4b4, Te6edf3linkTb4b4b4)
Te6edf3linkTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ff__is_allowedTb4b4b4(Te6edf3identityTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffIdentified caller Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff was not allowed, signalling busyTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_BUSYTb4b4b4, Te6edf3linkTb4b4b4)
Te6edf3linkTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCaller identified as Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff, ringingTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72= Te6edf3link
Tff7b72selfTff7b72.Td2a8ffhandle_signalling_fromTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__reset_dialling_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4, Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__activate_ring_toneTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__ringing_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__ringing_callbackTb4b4b4(Te6edf3identityTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffauto_answerTb4b4b4:
Tff7b72def Td2a8ffcbTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAuto-answering call from Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff in Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffauto_answerTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffauto_answerTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffanswerTb4b4b4(Te6edf3identityTb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3cbTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__timeout_incoming_call_atTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+Tff7b72selfTff7b72.Td2a8ffring_timeTb4b4b4)
Tff7b72def Td2a8ff__link_closedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linkTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3link Tff7b72== Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffRemote for Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3linkTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff hung upTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_terminatingTb4b4b4: Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffset_busyTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3busyTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_external_busy Tff7b72= Te6edf3busy
Tf0883e@property
Tff7b72def Td2a8ffbusyTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72!= Te6edf3SignallingTff7b72.Td2a8ffSTATUS_AVAILABLETb4b4b4: Tff7b72return Tff7b72True
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_external_busy
Tf0883e@property
Tff7b72def Td2a8ffactive_profileTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4: Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Tffa657hasattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Ta5d6ff"Ta5d6ffprofileTa5d6ff"Tb4b4b4)Tb4b4b4: Tff7b72return Tff7b72None
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofile
Tf0883e@property
Tff7b72def Td2a8ffreceive_mutedTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4: Tff7b72return Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72return Tff7b72False
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffmuted
Tf0883e@property
Tff7b72def Td2a8fftransmit_mutedTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4: Tff7b72return Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4: Tff7b72return Tff7b72False
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffmuted
Tff7b72def Td2a8ffsignalTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3signalTb4b4b4, Te6edf3linkTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3signal Tff7b72in Te6edf3SignallingTff7b72.Td2a8ffAUTO_STATUS_CODESTb4b4b4: Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3signal
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffsignalTb4b4b4(Te6edf3signalTb4b4b4, Te6edf3linkTb4b4b4)
Tff7b72def Td2a8ffanswerTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3identityTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcall_handler_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4) Tff7b72== Te6edf3identity Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72> Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffIncoming call from Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff already answered and activeTa5d6ff"Tb4b4b4)
Tff7b72return Tff7b72False
Tff7b72elif Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAnswering call failed, no active incoming callTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return Tff7b72False
Tff7b72elif Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAnswering call failed, active incoming call is not from Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return Tff7b72False
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAnswering call from Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffanswered Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ff__open_pipelinesTb4b4b4(Te6edf3identityTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__start_pipelinesTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCall setup complete for Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__established_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__established_callbackTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fflow_latency_outputTb4b4b4: Tff7b72selfTff7b72.Td2a8ffaudio_outputTff7b72.Td2a8ffenable_low_latencyTb4b4b4(Tb4b4b4)
Tff7b72return Tff7b72True
Tff7b72def Td2a8ffhangupTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3reasonTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcall_handler_lockTb4b4b4:
Te6edf3terminating_call Tff7b72= Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4; Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72= Tff7b72None
Te6edf3remote_identity Tff7b72= Te6edf3terminating_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3terminating_callTff7b72.Td2a8ffis_incoming Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4:
Tff7b72if Tff7b72not Te6edf3terminating_callTff7b72.Td2a8ffring_timeout Tff7b72and Te6edf3terminating_callTff7b72.Td2a8ffstatus Tff7b72== Te6edf3RNSTff7b72.Td2a8ffLinkTff7b72.Td2a8ffACTIVETb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_REJECTEDTb4b4b4, Te6edf3terminating_callTb4b4b4)
Tff7b72if Te6edf3terminating_callTff7b72.Td2a8ffstatus Tff7b72== Te6edf3RNSTff7b72.Td2a8ffLinkTff7b72.Td2a8ffACTIVETb4b4b4: Te6edf3terminating_callTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__stop_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffreceive_mixer Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftransmit_mixer Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffreceive_pipeline Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftransmit_pipeline Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffaudio_output Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3SignallingTff7b72.Td2a8ffSTATUS_AVAILABLE
Tff7b72selfTff7b72.Td2a8ff__receive_muted Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ff__transmit_muted Tff7b72= Tff7b72False
Tff7b72if Te6edf3remote_identityTb4b4b4: Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCall with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3remote_identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff terminatedTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffOutgoing call could not be connected, link establishment failedTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Te6edf3reason Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72if Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__ended_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__ended_callbackTb4b4b4(Te6edf3remote_identityTb4b4b4)
Tff7b72elif Te6edf3reason Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_BUSYTb4b4b4:
Tff7b72if Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__busy_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__busy_callbackTb4b4b4(Te6edf3remote_identityTb4b4b4)
Tff7b72elif Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__ended_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__ended_callbackTb4b4b4(Te6edf3remote_identityTb4b4b4)
Tff7b72elif Te6edf3reason Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_REJECTEDTb4b4b4:
Tff7b72if Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__rejected_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__rejected_callbackTb4b4b4(Te6edf3remote_identityTb4b4b4)
Tff7b72elif Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__ended_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__ended_callbackTb4b4b4(Te6edf3remote_identityTb4b4b4)
Tff7b72def Td2a8ffmute_receiveTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3muteTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__receive_muted Tff7b72= Te6edf3mute
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffmuteTb4b4b4(Te6edf3muteTb4b4b4)
Tff7b72def Td2a8ffunmute_receiveTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3unmuteTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__receive_muted Tff7b72= Tff7b72not Te6edf3unmute
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffunmuteTb4b4b4(Te6edf3unmuteTb4b4b4)
Tff7b72def Td2a8ffmute_transmitTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3muteTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__transmit_muted Tff7b72= Te6edf3mute
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffmuteTb4b4b4(Te6edf3muteTb4b4b4)
Tff7b72def Td2a8ffunmute_transmitTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3unmuteTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__transmit_muted Tff7b72= Tff7b72not Te6edf3unmute
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffunmuteTb4b4b4(Te6edf3unmuteTb4b4b4)
Tff7b72def Td2a8ffset_receive_gainTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreceive_gain Tff7b72= Tffa657floatTb4b4b4(Te6edf3gainTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffset_gainTb4b4b4(Tff7b72selfTff7b72.Td2a8ffreceive_gainTb4b4b4)
Tff7b72def Td2a8ffset_transmit_gainTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftransmit_gain Tff7b72= Tffa657floatTb4b4b4(Te6edf3gainTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffset_gainTb4b4b4(Tff7b72selfTff7b72.Td2a8fftransmit_gainTb4b4b4)
Tff7b72def Td2a8ffswitch_profileTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3profileTff7b72=Tff7b72NoneTb4b4b4, Te6edf3from_signallingTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofile Tff7b72== Te6edf3profileTb4b4b4: Tff7b72return
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofile Tff7b72= Te6edf3profile
Tff7b72selfTff7b72.Td2a8fftransmit_codec Tff7b72= Te6edf3ProfilesTff7b72.Td2a8ffget_codecTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftarget_frame_time_ms Tff7b72= Te6edf3ProfilesTff7b72.Td2a8ffget_frame_timeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4)
Tff7b72if Tff7b72not Te6edf3from_signallingTb4b4b4: Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffPREFERRED_PROFILETff7b72+Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4, Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__reconfigure_transmit_pipelineTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__select_call_profileTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3profileTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3profile Tff7b72== Tff7b72NoneTb4b4b4: Te6edf3profile Tff7b72= Te6edf3ProfilesTff7b72.Td2a8ffDEFAULT_PROFILE
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofile Tff7b72= Te6edf3profile
Tff7b72selfTff7b72.Td2a8ff__select_call_codecsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__select_call_frame_timeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffSelected call profile 0xTffd700{Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3profileTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ff__select_call_codecsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3profileTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreceive_codec Tff7b72= Te6edf3NullTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_codec Tff7b72= Te6edf3ProfilesTff7b72.Td2a8ffget_codecTb4b4b4(Te6edf3profileTb4b4b4)
Tff7b72def Td2a8ff__select_call_frame_timeTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3profileTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_time_ms Tff7b72= Te6edf3ProfilesTff7b72.Td2a8ffget_frame_timeTb4b4b4(Te6edf3profileTb4b4b4)
Tff7b72def Td2a8ff__reset_dialling_pipelinesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffpipeline_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffaudio_outputTb4b4b4: Tff7b72selfTff7b72.Td2a8ffaudio_outputTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdial_toneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_pipelineTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_pipelineTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffaudio_output Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffreceive_pipeline Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffreceive_mixer Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff__prepare_dialling_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__prepare_dialling_pipelinesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__select_call_profileTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffaudio_output Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffaudio_output Tff7b72= Te6edf3LineSinkTb4b4b4(Te6edf3preferred_deviceTff7b72=Tff7b72selfTff7b72.Td2a8ffspeaker_deviceTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixer Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixer Tff7b72= Te6edf3MixerTb4b4b4(Te6edf3target_frame_msTff7b72=Tff7b72selfTff7b72.Td2a8fftarget_frame_time_msTb4b4b4, Te6edf3gainTff7b72=Tff7b72selfTff7b72.Td2a8ffreceive_gainTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72= Te6edf3ToneSourceTb4b4b4(Te6edf3frequencyTff7b72=Tff7b72selfTff7b72.Td2a8ffdial_tone_frequencyTb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4, Te6edf3ease_time_msTff7b72=Tff7b72selfTff7b72.Td2a8ffdial_tone_ease_msTb4b4b4, Te6edf3target_frame_msTff7b72=Tff7b72selfTff7b72.Td2a8fftarget_frame_time_msTb4b4b4, Te6edf3codecTff7b72=Te6edf3NullTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_pipeline Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_pipeline Tff7b72= Te6edf3PipelineTb4b4b4(Te6edf3sourceTff7b72=Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4, Te6edf3codecTff7b72=Te6edf3NullTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8ffaudio_outputTb4b4b4)
Tff7b72def Td2a8ff__activate_ring_toneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffringtone_path Tff7b72!= Tff7b72None Tff7b72and Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Tff7b72selfTff7b72.Td2a8ffringtone_pathTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffringer_pipelineTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffringer_outputTb4b4b4: Tff7b72selfTff7b72.Td2a8ffringer_output Tff7b72= Te6edf3LineSinkTb4b4b4(Te6edf3preferred_deviceTff7b72=Tff7b72selfTff7b72.Td2a8ffringer_deviceTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffringer_source Tff7b72= Te6edf3OpusFileSourceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffringtone_pathTb4b4b4, Te6edf3loopTff7b72=Tff7b72TrueTb4b4b4, Te6edf3target_frame_msTff7b72=T79c0ff60Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffringer_pipeline Tff7b72= Te6edf3PipelineTb4b4b4(Te6edf3sourceTff7b72=Tff7b72selfTff7b72.Td2a8ffringer_sourceTb4b4b4, Te6edf3codecTff7b72=Te6edf3NullTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8ffringer_outputTb4b4b4)
Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffringer_lockTb4b4b4:
Tff7b72while Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_incoming Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffringer_pipelineTff7b72.Td2a8ffrunningTb4b4b4: Tff7b72selfTff7b72.Td2a8ffringer_pipelineTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.1Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffringer_sourceTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__play_busy_toneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffbusy_tone_seconds Tff7b72> T79c0ff0Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffaudio_output Tff7b72== Tff7b72None Tff7b72or Tff7b72selfTff7b72.Td2a8ffreceive_mixer Tff7b72== Tff7b72None Tff7b72or Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ff__reset_dialling_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72with Tff7b72selfTff7b72.Td2a8ffpipeline_lockTb4b4b4:
Te6edf3window Tff7b72= T79c0ff0.5Tb4b4b4; Te6edf3started Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3started Tff7b72< Tff7b72selfTff7b72.Td2a8ffbusy_tone_secondsTb4b4b4:
Te6edf3elapsed Tff7b72= Tb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3startedTb4b4b4)Tff7b72%Te6edf3window
Tff7b72if Te6edf3elapsed Tff7b72> T79c0ff0.25Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__enable_dial_toneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ff__mute_dial_toneTb4b4b4(Tb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.005Tb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.5Tb4b4b4)
Tff7b72def Td2a8ff__activate_dial_toneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3window Tff7b72= T79c0ff7
Te6edf3started Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72while Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_outgoing Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4:
Te6edf3elapsed Tff7b72= Tb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3startedTb4b4b4)Tff7b72%Te6edf3window
Tff7b72if Te6edf3elapsed Tff7b72> T79c0ff0.05 Tff7b72and Te6edf3elapsed Tff7b72< T79c0ff2.05Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__enable_dial_toneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ff__mute_dial_toneTb4b4b4(Tb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.2Tb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__enable_dial_toneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffshould_runTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffgain Tff7b72= T79c0ff0.04
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffrunningTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__mute_dial_toneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffshould_runTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffrunning Tff7b72and Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffgain Tff7b72!= T79c0ff0Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffgain Tff7b72= T79c0ff0.0
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffrunningTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__disable_dial_toneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdial_tone Tff7b72and Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffrunningTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdial_toneTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__reconfigure_transmit_pipelineTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_pipeline Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffaudio_inputTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_pipelineTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_mixer Tff7b72= Te6edf3MixerTb4b4b4(Te6edf3target_frame_msTff7b72=Tff7b72selfTff7b72.Td2a8fftarget_frame_time_msTb4b4b4, Te6edf3gainTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_gainTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffaudio_input Tff7b72= Te6edf3LineSourceTb4b4b4(Te6edf3preferred_deviceTff7b72=Tff7b72selfTff7b72.Td2a8ffmicrophone_deviceTb4b4b4, Te6edf3target_frame_msTff7b72=Tff7b72selfTff7b72.Td2a8fftarget_frame_time_msTb4b4b4, Te6edf3codecTff7b72=Te6edf3RawTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4, Te6edf3filtersTff7b72=Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8fffiltersTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_pipeline Tff7b72= Te6edf3PipelineTb4b4b4(Te6edf3sourceTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4,
Te6edf3codecTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_codecTb4b4b4,
Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffpacketizerTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffmuteTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__transmit_mutedTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffaudio_inputTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_pipelineTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__open_pipelinesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3identityTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffpipeline_lockTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4) Tff7b72== Te6edf3identityTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffIdentity mismatch while opening call pipelines, tearing down callTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Tffa657hasattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Ta5d6ff"Ta5d6ffpipelines_openedTa5d6ff"Tb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffpipelines_opened Tff7b72= Tff7b72False
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffpipelines_openedTb4b4b4: Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffPipelines already openened for call with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffOpening audio pipelines for call with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3identityTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_incomingTb4b4b4: Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_CONNECTINGTb4b4b4, Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffuse_agcTb4b4b4: Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8fffilters Tff7b72= Tb4b4b4[Te6edf3BandPassTb4b4b4(T79c0ff250Tb4b4b4, T79c0ff8500Tb4b4b4)Tb4b4b4, Te6edf3AGCTb4b4b4(Tb4b4b4)Tb4b4b4]
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8fffilters Tff7b72= Tb4b4b4[Te6edf3BandPassTb4b4b4(T79c0ff250Tb4b4b4, T79c0ff8500Tb4b4b4)Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ff__prepare_dialling_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffpacketizer Tff7b72= Te6edf3PacketizerTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Te6edf3failure_callbackTff7b72=Tff7b72selfTff7b72.Td2a8ff__packetizer_failureTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_mixer Tff7b72= Te6edf3MixerTb4b4b4(Te6edf3target_frame_msTff7b72=Tff7b72selfTff7b72.Td2a8fftarget_frame_time_msTb4b4b4, Te6edf3gainTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_gainTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffaudio_input Tff7b72= Te6edf3LineSourceTb4b4b4(Te6edf3preferred_deviceTff7b72=Tff7b72selfTff7b72.Td2a8ffmicrophone_deviceTb4b4b4, Te6edf3target_frame_msTff7b72=Tff7b72selfTff7b72.Td2a8fftarget_frame_time_msTb4b4b4, Te6edf3codecTff7b72=Te6edf3RawTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4, Te6edf3filtersTff7b72=Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8fffiltersTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftransmit_pipeline Tff7b72= Te6edf3PipelineTb4b4b4(Te6edf3sourceTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4,
Te6edf3codecTff7b72=Tff7b72selfTff7b72.Td2a8fftransmit_codecTb4b4b4,
Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffpacketizerTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffaudio_source Tff7b72= Te6edf3LinkSourceTb4b4b4(Te6edf3linkTff7b72=Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Te6edf3signalling_receiverTff7b72=Tff7b72selfTb4b4b4, Te6edf3sinkTff7b72=Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffset_source_max_framesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffaudio_sourceTb4b4b4, T79c0ff2Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4, Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4)
Tff7b72def Td2a8ff__packetizer_failureTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffFrame packetization failed, terminating callTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ff__start_pipelinesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffpipeline_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffaudio_inputTb4b4b4: Tff7b72selfTff7b72.Td2a8ffaudio_inputTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_pipelineTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_pipelineTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffaudio_inputTb4b4b4: Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffNo audio input was ready at call establishmentTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAudio pipelines startedTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ff__stop_pipelinesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffpipeline_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_mixerTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_mixerTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_mixerTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffaudio_inputTb4b4b4: Tff7b72selfTff7b72.Td2a8ffaudio_inputTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffreceive_pipelineTb4b4b4: Tff7b72selfTff7b72.Td2a8ffreceive_pipelineTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fftransmit_pipelineTb4b4b4: Tff7b72selfTff7b72.Td2a8fftransmit_pipelineTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAudio pipelines stoppedTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72def Td2a8ffcallTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3identityTb4b4b4, Te6edf3profileTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcall_handler_lockTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3SignallingTff7b72.Td2a8ffSTATUS_CALLING
Te6edf3outgoing_call_timeout Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+Tff7b72selfTff7b72.Td2a8ffwait_time
Te6edf3outgoing_establishment_timeout Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+Tff7b72selfTff7b72.Td2a8ffestablishment_timeout
Te6edf3call_destination Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTb4b4b4(Te6edf3identityTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffOUTTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffSINGLETb4b4b4, Te6edf3APP_NAMETb4b4b4, Te6edf3PRIMITIVE_NAMETb4b4b4)
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffhas_pathTb4b4b4(Te6edf3call_destinationTff7b72.Td2a8ffhashTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffNo path known for call to Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3call_destinationTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff, requesting path...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffrequest_pathTb4b4b4(Te6edf3call_destinationTff7b72.Td2a8ffhashTb4b4b4)
Tff7b72while Tff7b72not Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffhas_pathTb4b4b4(Te6edf3call_destinationTff7b72.Td2a8ffhashTb4b4b4) Tff7b72and Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3outgoing_call_timeoutTb4b4b4: Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.2Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffhas_pathTb4b4b4(Te6edf3call_destinationTff7b72.Td2a8ffhashTb4b4b4) Tff7b72and Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72>Tff7b72= Te6edf3outgoing_call_timeoutTb4b4b4: Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffEstablishing link with Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3call_destinationTff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72= Te6edf3RNSTff7b72.Td2a8ffLinkTb4b4b4(Te6edf3call_destinationTb4b4b4,
Te6edf3established_callbackTff7b72=Tff7b72selfTff7b72.Td2a8ff__outgoing_link_establishedTb4b4b4,
Te6edf3closed_callbackTff7b72=Tff7b72selfTff7b72.Td2a8ff__outgoing_link_closedTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_incoming Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_outgoing Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_terminating Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffring_timeout Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofile Tff7b72= Te6edf3profile
Tff7b72selfTff7b72.Td2a8ff__timeout_outgoing_call_atTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Te6edf3outgoing_call_timeoutTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__timeout_outgoing_establishment_atTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4, Te6edf3outgoing_establishment_timeoutTb4b4b4)
Tff7b72def Td2a8ff__outgoing_link_establishedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linkTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffLink established for call with Tffd700{Te6edf3linkTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3linkTff7b72.Td2a8ffset_link_closed_callbackTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__link_closedTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhandle_signalling_fromTb4b4b4(Te6edf3linkTb4b4b4)
Tff7b72def Td2a8ff__outgoing_link_closedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linkTb4b4b4)Tb4b4b4:
Tff7b72pass
Tff7b72def Td2a8ffsignalling_receivedTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3signalsTb4b4b4, Te6edf3sourceTb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3signal Tff7b72in Te6edf3signalsTb4b4b4:
Tff7b72if Te6edf3source Tff7b72!= Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4: Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffReceived signalling on non-active call, ignoringTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_incoming Tff7b72and Tff7b72not Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffanswered Tff7b72and Te6edf3signal Tff7b72< Te6edf3SignallingTff7b72.Td2a8ffPREFERRED_PROFILETb4b4b4:
Tff7b72return
Tff7b72elif Te6edf3signal Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_BUSYTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffRemote is busy, terminatingTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_terminating Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ff__play_busy_toneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__disable_dial_toneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Te6edf3reasonTff7b72=Te6edf3SignallingTff7b72.Td2a8ffSTATUS_BUSYTb4b4b4)
Tff7b72elif Te6edf3signal Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_REJECTEDTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffRemote rejected call, terminatingTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__play_busy_toneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__disable_dial_toneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffhangupTb4b4b4(Te6edf3reasonTff7b72=Te6edf3SignallingTff7b72.Td2a8ffSTATUS_REJECTEDTb4b4b4)
Tff7b72elif Te6edf3signal Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_AVAILABLETb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffLine available, sending identificationTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3signal
Te6edf3sourceTff7b72.Td2a8ffidentifyTb4b4b4(Tff7b72selfTff7b72.Td2a8ffidentityTb4b4b4)
Tff7b72elif Te6edf3signal Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_RINGINGTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffIdentification accepted, remote is now ringingTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3signal
Tff7b72selfTff7b72.Td2a8ff__prepare_dialling_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsignalTb4b4b4(Te6edf3SignallingTff7b72.Td2a8ffPREFERRED_PROFILETff7b72+Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofileTb4b4b4, Tff7b72selfTff7b72.Td2a8ffactive_callTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_outgoingTb4b4b4: Tff7b72selfTff7b72.Td2a8ff__activate_dial_toneTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3signal Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_CONNECTINGTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffCall answered, remote is performing call setup, opening audio pipelinesTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3signal
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcaller_pipeline_open_lockTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__reset_dialling_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__open_pipelinesTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72elif Te6edf3signal Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72and Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffis_outgoingTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffRemote call setup completed, starting audio pipelinesTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72with Tff7b72selfTff7b72.Td2a8ffcaller_pipeline_open_lockTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__start_pipelinesTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__disable_dial_toneTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCall setup complete for Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffhashTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3signal
Tff7b72if Tffa657callableTb4b4b4(Tff7b72selfTff7b72.Td2a8ff__established_callbackTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__established_callbackTb4b4b4(Tff7b72selfTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffget_remote_identityTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fflow_latency_outputTb4b4b4: Tff7b72selfTff7b72.Td2a8ffaudio_outputTff7b72.Td2a8ffenable_low_latencyTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3signal Tff7b72>Tff7b72= Te6edf3SignallingTff7b72.Td2a8ffPREFERRED_PROFILETb4b4b4:
Te6edf3profile Tff7b72= Te6edf3signal Tff7b72- Te6edf3SignallingTff7b72.Td2a8ffPREFERRED_PROFILE
Tff7b72if Tff7b72selfTff7b72.Td2a8ffactive_call Tff7b72and Tff7b72selfTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3SignallingTff7b72.Td2a8ffSTATUS_ESTABLISHEDTb4b4b4: Tff7b72selfTff7b72.Td2a8ffswitch_profileTb4b4b4(Te6edf3profileTb4b4b4, Te6edf3from_signallingTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ff__select_call_profileTb4b4b4(Te6edf3profileTb4b4b4)
Tff7b72def Tff7b72__str__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ff<lxst.telephony/Tffd700{Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffidentityTff7b72.Td2a8ffhashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tffd700}Ta5d6ff>Ta5d6ff"
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────